﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AgentSystem.AgentCreator.Util
{
    /// <summary>
    /// Constants.
    /// </summary>
    public class Constants
    {
        /// <summary>
        /// The regex special chars
        /// </summary>
        public const string RegexSpecialChars = "[^0-9a-zA-Z]+";

        /// <summary>
        /// The agent string
        /// </summary>
        public const string AgentString = "Agent";

        /// <summary>
        /// Standard State member name
        /// </summary>
        public const string StateMemberName = "State";

        #region Attributes
        
        /// <summary>
        /// The name string
        /// </summary>
        public const string NodeAttributeName = "name";

        /// <summary>
        /// The node attribute for
        /// </summary>
        public const string NodeAttributeFor = "for";

        /// <summary>
        /// The node attribute until
        /// </summary>
        public const string NodeAttributeUntil = "until";

        /// <summary>
        /// The variable type string
        /// </summary>
        public const string VariableTypeAttribute = "messageType";

        /// <summary>
        /// Node Attribute variable
        /// </summary>
        public const string NodeAttributeVariable = "variable";

        /// <summary>
        /// Node Attribute part
        /// </summary>
        public const string NodeAttributePart = "part";

        /// <summary>
        /// Node Attribute value
        /// </summary>
        public const string NodeAttributeValue = "value";

        /// <summary>
        /// Node Attribute Type
        /// </summary>
        public const string NodeAttributeType = "type";
        
        #endregion

        #region Activity Name Types

        /// <summary>
        /// The node name process
        /// </summary>
        public const string NodeNameProcess = "process";

        /// <summary>
        /// The node name variables
        /// </summary>
        public const string NodeNameVariables = "variables";

        /// <summary>
        /// The node name variable
        /// </summary>
        public const string NodeNameVariable = "variable";

        /// <summary>
        /// The node name wait
        /// </summary>
        public const string NodeNameWait = "wait";

        /// <summary>
        /// The node name sequence
        /// </summary>
        public const string NodeNameSequence = "sequence";

        /// <summary>
        /// Node name assign
        /// </summary>
        public const string NodeNameAssign = "assign";

        /// <summary>
        /// Node Name copy
        /// </summary>
        public const string NodeNameCopy = "copy";

        /// <summary>
        /// Node Name from
        /// </summary>
        public const string NodeNameFrom = "from";

        /// <summary>
        /// Node Name to
        /// </summary>
        public const string NodeNameTo = "to";

        #endregion

        #region Variable Types

        /// <summary>
        /// The variable type int32
        /// </summary>
        public const string VariableTypeInt32 = "int32";

        /// <summary>
        /// The variable type string
        /// </summary>
        public const string VariableTypeString = "string";

        /// <summary>
        /// The variable type float
        /// </summary>
        public const string VariableTypeFloat = "float";

        /// <summary>
        /// The variable type object
        /// </summary>
        public const string VariableTypeObject = "object"; 

        #endregion
    }
}
